Misaghlb

بلاگ من

چگونه در پروژه های اوپن سورس همکاری کنیم

سلام همینطور که از عنوان مشخصه، میخوام مقداری درباره اوپن سورس حرف بزنم و اینکه چطور میتونیم در پروژه های متن باز همکاری کنیم. در این پست سعی میکنم مقدمات رو بگم و در پست دیگه بطور عملی ادامه میدیم.

Open Source چیه؟

همونطور که اسمش فریاد میزنه یعنی اینکه سورس کد برنامه باز هست و همه میتونن اونو ببینن. البته مفهومی مشابه دیگری هست بنام Source available که نباید با Open Source اشتباه گرفته بشه. این مفهوم به معنی این است که فقط کد منبع در دسترس باشد و ممکن است اجازه تغییر و توزیع در آن کد وجود نداشته باشد ولی متن باز (Open Source) به معنی این است که علاوه بر در دسترس بودن کد منبع، بشه در اون تغییر ایجاد کرد و توزیع کرد. در واقع برنامه های Open Source ، Source available هستند ولی Source available ممکن است Open Source نباشند. البته چیزای دیگه هم هست مثل Free software که اینجا دربارش حرف نمیزنم ولی پیشنهاد میکنم دربارش تحقیق کنین. اینم یه منبع

چه خوبی هایی داره؟

خوبی هاش که خیلی زیادن ولی اینجا به چند موردش اشاره میکنم:

یکی از خوبی هاش اینه که همه میتونن کدهای برنامه رو بینن و طبق نیازهایی که دارن کدهارو تغییر بدن و چیزا های جدید اضافه کنن و حتی طبق لایسنس ارایه شده، برنامه رو منتشر کنن. میبینیم که با اینکار چقدر قابلیت انعطاف و پشتیبانی برنامه بالا میره. حالا برنامه ای رو در نظر بگیرید که فقط سه نفر توسعه دهنده داره و متن باز نیست، حالا اگر شما نیاز به قابلیت یا ویژگی خاصی در این برنامه داشته باشید تنها کاری که میتونید بکنید اینه که از توسعه دهنده ها بخواهید که این قابلیت رو برای شما اضافه بکنه و منتظر بشینین که شاید روزی روزگاری توسعه دهنده های عزیز به فکر شما بیفتند و … . این ویژگی مخصوصا در برنامه های بزرگ و تجاری که شرکت های مختلف از اون استفاده میکنند بیشتر خودشو نشون میده، و هر شرکتی میتونه طبق نیازهایی که داره برنامه رو تغییر و گسترش بده.

یکی از ویژگی های مهم دیگه میشه به امنیت برنامه های متن باز اشاره کرد. به دلیل اینکه افراد زیادی به سورس برنامه دسترسی دارند باگ ها و مشکلات امنیتی که در برنامه وجود دارد به سرعت شناسایی و رفع میشه. در مقابل اگر در برنامه هایی که کلوز سورس یا سورس بسته هستند، اگر باگ و یا مشکل امنیتی وجود داشته باشه، رفع مشکل زمان نسبتا طولانی تری میبره و تا زمانی که توسعه دهنده ها متوجه بشوند و مشکل رو برطرف کنن، سو استفاده کننده ها بیکار نمیشینن و بهره کافی رو از این مشکل میبرن.

چجور میتونم در پروژه های متن باز همکاری کنم؟

حالا که تعدادی هر چند خیلی کم از خوبی های متن باز رو دیدیم، ببینیم چجور ما هم میتونیم در این کار سهیم باشیم. من در اینجا تعاریف کوتاهی برای گیت و گیتهاب میگم اشاره ای میکنم:

گیت یک سیستم کنترل نسخه هست به زبون ساده تر با کمک گیت میتونین روی تغییرات فایلهاتون کنترل داشته باشین، با اینکه بیشتر برای توسعه نرم افزار و کنترل نسخه های فایلهای برنامه ها ازش استفاده میشه، ولی برای پیگیری تغییرات هر فایلی میشه ازش استفاده کرد. گیتهاب هم یک سایتی هست که برنامه هایی رو که با گیت کنترل نسخه و مدیریت میشن رو توی خودش نگه میداره و از طریق اون افراد میتونن رو یک پروژه واحد کار کنن.

اینجا تعریف چنتا از اصطلاحات پرکاربرد گیت و گیتهاب رو با هم مرور میکنیم:

Repository: به هر پروژه، Repository یا مخزن! گفته میشه.

Commit: ذخیره کردن حالت فعلی پروژه. وقتی تغییراتی در پروژه اعمال کردین نیاز هست که اون ها رو توی گیت ذخیره بکنین . به ذخیره کردن و ثبت مجموع تغییرات ، کامیت گفته میشه.

Fork: با فورک کردن یک ریپوزیتوری میتونید آزادانه تغییرات خودتون رو روی ریپوزیتوری اعمال کنین، بدون اینکه تغییری در ریپوزیتوریه اصلی بوجود بیاد. در واقع یک نسخه از ریپوزیتوریه اصلی رو برای خودتون برمیدارین.

Pull Request: در گیتهاب یک قابلیت خوبی هست به نام Pull Request. کاربردش اینه که بعنوان مثال وقتی یک ریپوزیتوری رو Fork میکنین و روی اون تغییرات مد نظرتون رو انجام میدید، میتونین با Pull Request به صاحب پروژه در گیتهاب اطلاع بدین که من فلان تغییرات رو روی پروژه انجام دادم و اگر مایل بودی روی پروژه اصلی توی گیتهاب اضافش کن که بقیه هم بتونن ازش استفاده کنن. به همین راحتییی و خوشمزگی 😉

مباحث گفتنی خیلی زیاده و نمیشه همشو اینجا پوشش داد، سعی کردم مفاهیم اصلی و مقدماتی رو بگم. برای اطلاعات بیشتر میتونین به مستندات و آموزشی سایت گیت رجوع کنین. بخاطر اینکه بحث خیلی طولانی نشه، توی پست بعدی بصورت عملی نحوه Pull Request رو با هم دنبال میکنیم.